#ifndef POINT_H
#define POINT_H

#include<iostream>
#include "Matrice.h"
#include "Vecteur.h"

class Point
{
private:
	float x;
	float y;
	float z;
	float w;

public:
	Point();
	Point(float x, float y, float z, float w);
	Point(float *c);
	Point(Point const& point);
	Point(Point p, float t, Vecteur dir);
	~Point();

	Point& operator=(Point const& point);

	float getX();
	float getY();
	float getZ();
	float getW();

	void setX(float x);
	void setY(float y);
	void setZ(float z);
	void setW(float w);

	void normalize();
	float distance(Point p);
	Vecteur getVecteur(Point *p);
	Point operator*(Matrice *m); 
	bool operator==(Point p);
	Point operator+(Point p);

	std::ostream& display(std::ostream &out); 
};

std::ostream& operator<<(std::ostream &out,Point p);

#endif